﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProjetoJVA.localhostTurma;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Net;

namespace ProjetoJVA.Gui
{
    public partial class TurmaTela : Form
    {
        public TurmaTela()
        {
            InitializeComponent();
        }

        private Service1 serviçoTurma = new Service1();

        private void PrincipalTela_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.FixedDialog;
            listar();
            /*
            listaTurmas = new List<Turma>();
            listaSeries = new List<SerieTurma>();
            listaProfessores = new List<ProfessorTurma>();
            listaFuncionarios = new List<Funcionario>();
            series = new List<Serie>();
            turmas = new ListViewItem();
            serviçoTurma = new Service1();
            string professores = "";

            try
            {
                listaTurmas = serviçoTurma.listarTurmas().ToList();
                listaSeries = serviçoTurma.listarSeriesTurmas().ToList();
                listaProfessores = serviçoTurma.listarProfessores().ToList();
                listaFuncionarios = serviçoTurma.listarFuncionarios().ToList();
                series = serviçoTurma.listarSeries().ToList();

                foreach (var turma in listaTurmas)
                {
                    turmas = listViewTurmas.Items.Add(turma.CodTurma.ToString());
                    turmas.SubItems.Add(turma.DescTurma);

                    foreach (var serie in listaSeries)
                    {
                        if (serie.CodTurma == Convert.ToInt32(turmas.SubItems[0].Text))
                        {
                            foreach (var descSerie in series)
                            {
                                if (serie.CodSerie == descSerie.CodSerie)
                                {
                                    turmas.SubItems.Add(descSerie.DescSerie);
                                    turmas.SubItems.Add(serie.QtdAlunos.ToString());
                                    break;
                                }
                            }                         
                         break;
                        }
                    }
                    turmas.SubItems.Add(turma.QtdAlunosMax.ToString());
                    turmas.SubItems.Add(turma.TurnoTurma);

                    foreach (var professor in listaProfessores)
                    {
                        if (professor.CodTurma == Convert.ToInt32(turmas.SubItems[0].Text))
                        {
                            foreach (var funcionario in listaFuncionarios)
                            {
                                if (funcionario.MatFunc == professor.MatFunc)
                                {
                                    professores = professores + funcionario.NomeFunc + ", ";
                                }
                            }
                        }
                    }
                    turmas.SubItems.Add(professores);
                }
            }
            catch (SoapException ex)
            {
                var message = ex.Message;

                message = message.Remove(0, message.LastIndexOf("--->"));

                message = message.Remove(0, message.IndexOf(":") + 1);

                if (message.IndexOf('\n') >= 0)
                {

                    message = message.Remove(message.IndexOf('\n'));
                }

                MessageBox.Show(message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            */
        }


        private void botaoTurmas_MouseUp(object sender, MouseEventArgs e)
        {

        }

        private void botaoTurmas_MouseEnter(object sender, EventArgs e)
        {
        }

        private void botaoSair_Click(object sender, EventArgs e)
        {
            Environment.Exit(0);
        }

        private void botaoTurmas_Click(object sender, EventArgs e)
        {
            NovaTurmaTela ntt = new NovaTurmaTela();
            ntt.ShowDialog();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            PrincipalTela pt = new PrincipalTela();
            pt.Show();
            this.Dispose();
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void botaoAlterar_Click(object sender, EventArgs e)
        {
            alterar();
        }

        private void botaoExcluir_Click(object sender, EventArgs e)
        {

        }

        public void alterar()
        {
            try
            {
                Turma turma = new Turma();
                turma.CodTurma = Convert.ToInt32(listViewTurmas.SelectedItems[0].SubItems[0].Text);
                turma.DescTurma = listViewTurmas.SelectedItems[0].SubItems[1].Text;
                turma.QtdAlunosMax = Convert.ToInt32(listViewTurmas.SelectedItems[0].SubItems[4].Text);
                turma.TurnoTurma = listViewTurmas.SelectedItems[0].SubItems[5].Text;

                Serie serie = new Serie();
                serie.DescSerie = listViewTurmas.SelectedItems[0].SubItems[2].Text;

                turma.Serie = serie;

                List<Funcionario> funcionarioLista = new List<Funcionario>();
                Funcionario func = new Funcionario();
                string professoresLista = listViewTurmas.SelectedItems[0].SubItems[6].Text;
                string professores = "";
                char letra;
                for (int i = 0; i < professoresLista.Length; i++)
                {
                    letra = professoresLista[i];
                    if (letra == ',')
                    {
                        func = new Funcionario();
                        func.NomeFunc = professores;
                        funcionarioLista.Add(func);
                        professores = "";
                        i = i + 2;
                    }
                    letra = professoresLista[i];
                }
                func = new Funcionario();
                func.NomeFunc = professores;
                funcionarioLista.Add(func);

                turma.Funcionarios = funcionarioLista.ToArray();

                AlterarTurmaTela atl = new AlterarTurmaTela(turma);
                atl.ShowDialog();
            }
            catch (ArgumentOutOfRangeException)
            {
                MessageBox.Show("Nenhuma turma selecionada!");
            }
            catch (SoapException ex)
            {
                var message = ex.Message;

                message = message.Remove(0, message.LastIndexOf("--->"));

                message = message.Remove(0, message.IndexOf(":") + 1);

                if (message.IndexOf('\n') >= 0)
                {

                    message = message.Remove(message.IndexOf('\n'));
                }

                MessageBox.Show(message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public void excluir()
        {
        }

        public void listar()
        {
            try
            {
                List<Turma> lista = serviçoTurma.listaTotal().ToList();

                for (int i = 0; i < lista.Count; i++)
                {
                    List<Funcionario> listaFunc = lista[i].Funcionarios.ToList();
                    ListViewItem linha = listViewTurmas.Items.Add(lista[i].CodTurma.ToString());
                    linha.SubItems.Add(lista[i].DescTurma);
                    linha.SubItems.Add(lista[i].Serie.DescSerie);
                    linha.SubItems.Add("0");
                    linha.SubItems.Add(lista[i].QtdAlunosMax.ToString());
                    linha.SubItems.Add(lista[i].TurnoTurma);
                    string profs = listaFunc[0].NomeFunc;
                    for (int e = 1; e < listaFunc.Count; e++)
                    {
                        profs = profs + ", " + listaFunc[e].NomeFunc;
                    }
                    linha.SubItems.Add(profs);
                }
            }
            catch (SoapException ex)
            {
                var message = ex.Message;

                message = message.Remove(0, message.LastIndexOf("--->"));

                message = message.Remove(0, message.IndexOf(":") + 1);

                if (message.IndexOf('\n') >= 0)
                {

                    message = message.Remove(message.IndexOf('\n'));
                }

                MessageBox.Show(message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
